home *** CD-ROM | disk | FTP | other *** search
/ Fritz: All Fritz / All Fritz.zip / All Fritz / FILES / PROGMISC / MODULTUB.LZH / RANPROC.MOD < prev    next >
Text File  |  1989-01-18  |  1KB  |  65 lines

  1.                                       (* Chapter 15 - Program 4 *)
  2. MODULE RanProc;
  3.  
  4. FROM InOut IMPORT WriteString, WriteLn;
  5.  
  6. FROM SYSTEM IMPORT WORD, PROCESS, ADR, SIZE, NEWPROCESS, TRANSFER;
  7.  
  8. VAR MainOne, ToggleOne, HelloOne : PROCESS;
  9.     Space1, Space2               : ARRAY[1..300] OF WORD;
  10.     Index                        : CARDINAL;
  11.  
  12. PROCEDURE Toggle;
  13. VAR ToggleFactor : CARDINAL;
  14. BEGIN
  15.    ToggleFactor := 0;
  16.    LOOP
  17.       IF ToggleFactor = 1 THEN
  18.          ToggleFactor := 0;
  19.          WriteString(" odd");
  20.          TRANSFER(ToggleOne, HelloOne);
  21.       ELSE
  22.          ToggleFactor := 1;
  23.          WriteString(" even");
  24.          TRANSFER(ToggleOne,MainOne);
  25.       END;
  26.    END;
  27. END Toggle;
  28.  
  29. PROCEDURE Hello;
  30. BEGIN
  31.    LOOP
  32.       WriteString(" hello");
  33.       TRANSFER(HelloOne,MainOne);
  34.    END;
  35. END Hello;
  36.  
  37. BEGIN (* Main Program *)
  38.    NEWPROCESS(Toggle,ADR(Space1),SIZE(Space1),ToggleOne);
  39.    NEWPROCESS(Hello,ADR(Space2),SIZE(Space2),HelloOne);
  40.    FOR Index := 1 TO 7 DO
  41.       WriteString("Start");
  42.       TRANSFER(MainOne,ToggleOne);
  43.       WriteString(" middle");
  44.       TRANSFER(MainOne,HelloOne);
  45.       WriteString(" end.");
  46.       WriteLn;
  47.    END;
  48. END RanProc.
  49.  
  50.  
  51.  
  52.  
  53. (* Result of execution
  54.  
  55. Start even middle hello end.
  56. Start odd hello middle hello end.
  57. Start even middle hello end.
  58. Start odd hello middle hello end.
  59. Start even middle hello end.
  60. Start odd hello middle hello end.
  61. Start even middle hello end.
  62.  
  63. *)
  64.  
  65.